;[edi-8] Index
;[edi-4] Group

add edi,-0x40
mov ecx,[edi+0x40-0xc]
push ecx
mov ecx,[edi+0x40-0x10]
push ecx

mov ebp,ebx
mov di,0x14cc+4*2+0x5070
lea edi,[di-0x5070]
mov esi,0x47f77a+0x30303030
lea esi,[esi-0x30303030]
cmp dword ptr [esp+edi],esi
jne IsSelf
mov di,0xbec+0x3050
lea edi,[di-0x3050-0x40]
cmp dword ptr [edi+ebp+0x40],edi
jna IsSelf

mov eax,[edi+ebp+0x40]
mov esi,0x4b5b4c+0x30303030
lea esi,[esi-0x30303030]
lea edx,[di+(0xb750-0xbec)+0x40]
nop
mov esi,[esi]
nop
lea esi,[edx+esi]
xor ecx,ecx
add ecx,0d60
loop1:
inc ecx
push ecx
nop
cmp dword ptr [esp],0d65
pop ecx
je IsSelf
add ecx,-0d60
nop
mov edi,[esi+ecx*4]
add ecx,0d60
dec edi
js IsSelf
inc edi
nop
mov edi,[edi]
mov dx,0x3c4^0x3060
xor dx,0x3060
nop
lea edi,[edx+edi]
scasd
jne loop1
add edi,(0x3d4-0x3c4)-4+0x40
mov esi,[edi-0x40]
nop
mov esi,[esi]
push esi
jno CallArrayAccessGrpItem

Return:
push word 0x40c+0x6030
pop bx
lea ebx,[bx-0x6030]
neg ebx
sub esp,ebx
ret

IsSelf:
add ebp,0x40
mov edx,[ebp-0x40]
xor eax,eax
sub ax,-(0x3d4+0x3030+0x40)
sub ax,0x3030
mov esi,eax
mov edx,[edx+esi-0x40]
push 0x40
pop esi
mov edx,[edx+esi-0x40]
push edx

CallArrayAccessGrpItem:
mov eax,0x4090f0+0x30303030
sub eax,0x30303030
dw 0x6325 ;call eax <- %cにて0xffを代入
db 0xd0
add esp,0x3c
add esp,-0x30
nop
test eax,eax
jz Return+1
nop
mov esi,[eax]
xor eax,eax
inc eax
inc eax
inc eax
push eax
mov esi,[esi+0x20]
dw 0x6325 ;call esi <- %cにて0xffを代入
db 0xd6
jno Return+2